<?php require_once(BASEPATH.'application/controllers/validaciones.php');
/*
 * Presupuestos
 * @author  : Katy Oviedo
 * Version  :2.0
 * Date     :15/02/2012 
 */

class spre extends validaciones {
	
	function spre(){
		parent::Controller();
		$this->load->library('rapyd');
	}

	function index() {
		redirect('ventas/spre/filteredgrid');
	}
    
    /** Muestra el filtro **/
    
	function filteredgrid(){
		$this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$scli=array(
		'tabla'   =>'scli',
		'columnas'=>array(
		'cliente' =>'C&oacute;digo Cliente',
		'nombre'=>'Nombre',
		'contacto'=>'Contacto'),
		'filtro'  =>array('cliente'=>'C&oacute;digo Cliente','nombre'=>'Nombre'),
		'retornar'=>array('cliente'=>'cod_cli'),
		'titulo'  =>'Buscar Cliente');
		$boton=$this->datasis->modbus($scli);

		$this->rapyd->uri->keep_persistence();
        
        $filter = new DataFilter('B&uacute;squeda de Presupuestos','spre');
		//$filter->db->where('tipo','D');
		
        $ano=date("Y");
        
        $filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause ='where';
		$filter->fechad->db_name =$filter->fechah->db_name='fecha';
		$filter->fechad->insertValue = date("Y-m-d", mktime(0, 0, 0, 01, 1, $ano));
		$filter->fechah->insertValue = date('Y-m-d');
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>=';
		$filter->fechah->operator='<=';

		$filter->numero = new inputField('N&uacute;mero', 'numero');
		$filter->numero->size = 30;

		$filter->cliente = new inputField('Codigo de Cliente', 'cod_cli');
		$filter->cliente->size = 30;
		$filter->cliente->append($boton);
		
		$filter->status = new dropdownField("Estado", "status");
		$filter->status->option("","Todos");
		$filter->status->options("SELECT codigo, descrip FROM spre_status ORDER BY descrip");
		$filter->status->style = "width:150px";
        
        //$filter->tipo_doc = new  dropdownField ('Tipo', 'tipo_doc');
        //$filter->tipo_doc->option("","Todos");
		//$filter->tipo_doc->option('F','PRESUPUESTO');
		//$filter->tipo_doc->option('M','MUESTRA'); 
		//$filter->tipo_doc->style='width:150px;';
		
		$filter->moneda = new dropdownField("Moneda", "moneda");
		$filter->moneda->style='width:150px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");

		$filter->buttons('reset','search');
		$filter->build("dataformfiltro");
		
		function facturado($facturado='',$nombre){
			if($facturado=='S'){
				return("<div style='background-color:#CDEC94'>$nombre</div>");
			}else{
				return ($nombre);
			}
		}
		
		function boton($tipo=''){
			return $tipo;
		}

		$grid = new DataGrid2();
		$grid->order_by('id','desc');
		$grid->per_page = 10;
		$grid->use_function('facturado');
		$grid->use_function('boton');
		
		$atts = array(
			 'width'      => '800',
			 'height'     => '600',
			 'scrollbars' => 'yes',
			 'status'     => 'yes',
			 'resizable'  => 'yes',
			 'screenx'    => '0',
			 'screeny'    => '0'
		 );

		$uri = img(array('src'=>'images/<boton><#status#></boton>.gif','border'=>'0','alt'=>'Estado','height'=>'12','title'=>'Estado'));
		$uri .= anchor('ventas/spre/dataedit/show/<#id#>','<#numero#>');
		
		$uri_2  = anchor_popup('formatos/ver/PRESUP/<#numero#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/PRESUP/<#numero#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
					
		$grid->column('Acci&oacute;n',$uri_2,"align='center'");
		
		$grid->column_orderby('N&uacute;mero'  ,$uri,'numero');
		$grid->column_orderby('Fecha'          ,'<dbdate_to_human><#fecha#></dbdate_to_human>'     ,'fecha'  );
		$grid->column_orderby('Codigo'         ,'cod_cli'                                          ,'cod_cli' );
		$grid->column_orderby('Nombre'         ,'<facturado><#facturado#>|<#nombre#></facturado>'  ,'nombre'  );
		$grid->column_orderby('Sub.Total'      ,'<nformat><#totals#></nformat>'                    ,'totals'  );
		$grid->column_orderby('Impuesto'       ,'<nformat><#iva#></nformat>'                       ,'iva'     );
		$grid->column_orderby('Total'          ,'<nformat><#totalg#></nformat>'                    ,'totalg'  );
		$grid->column_orderby('Vendedor'       ,'vd'                                               ,'vd'      );
			
		//$grid->add("ventas/spre/dataedit/create",'Nuevo Presupuesto');	
		
        $grid->totalizar('totals','iva','totalg');

		$grid->output;
		$grid->build('datagridST');
		
		$style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 400px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';
			
		$data['script']  = script('jquery.js');
		$data['style']   = $style;
		$data['style']  .= style('superTables.css');
		$data['script'] .= script('superTables.js');

		$data['filtro']  = $filter->output;
		$data['content'] = $grid->output;
		
		$data['head']    = $this->rapyd->get_head();
		$data['title']   = heading('Presupuesto');
		$this->load->view('view_ventanas', $data);
	}
  
    /**Crea el formulario**/
    
	function dataedit($estado='',$id=''){
		$this->rapyd->load('dataobject','datadetails');

		$modbus=array(
			'tabla'   =>'sinv',
			'columnas'=>array(
				'codigo'  =>'C&oacute;digo',
				'descrip' =>'Descripci&oacute;n',
				'unidad' =>'Unidad',
				'base1' =>'Base 1',
				'base2' =>'Base 2',
				'base3' =>'Base 3',
				'precio1' =>'Precio 1',
				'precio2' =>'Precio 2',
				'precio3' =>'Precio 3',
				//'precio4' =>'Precio 4',
				'moneda'  =>'Moneda',
				'existen' =>'Existencia',
				),
			'filtro'  =>array('codigo'=>'Codigo','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'codigo' =>'codigo_<#i#>',
				'descrip'=>'desca_<#i#>',
				'base1'  =>'precio1_<#i#>',
				'base2'  =>'precio2_<#i#>',
				'base3'  =>'precio3_<#i#>',
				//'precio4'  =>'precio4_<#i#>',
				'iva'    =>'itiva_<#i#>',
				'unidad' =>'unidad_<#i#>'
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Art&iacute;culo',
			'where'   => '`activo` = "S"',
			'script'  => array('post_modbus_sinv(<#i#>)')
		);
		$btn=$this->datasis->p_modbus($modbus,'<#i#>');

		$mSCLId=array(
		'tabla'   =>'scli',
		'columnas'=>array(
		'cliente' =>'Cliente',
		'nombre'=>'Nombre', 
		'rifci'=>'Rif/Cedula',
		'dire11'=>'Direcci&oacute;n'),
		'filtro'  =>array('nombre'=>'Nombre'),
		'retornar'=>array('cliente'=>'cod_cli','nombre'=>'nombre','rifci'=>'rifci',
		'dire11'=>'direc','tipo'=>'sclitipo'),
		'titulo'  =>'Buscar Cliente',
		'script'  => array('post_modbus_scli()'));
		$boton =$this->datasis->modbus($mSCLId);
		
		$modbus_trans=array(
		'tabla'   =>'transportistas',
		'columnas'=>array(
        'nombre'=>'Nombre',
        'direccion'=>'Direccion'),
		'filtro'  =>array('nombre'=>'Nombre'),
		'retornar'=>array(
        'nombre'=>'transportista',
        'direccion'=>'direct'),
        'p_uri'   => array(4=>'<#i#>'),
		'titulo'  =>'Buscar Empresa de Trasnporte');

		$boton2=$this->datasis->p_modbus($modbus_trans);

		$do = new DataObject('spre');
		$do->rel_one_to_many('itspre', 'itspre', 'numero');
		$do->pointer('scli' ,'scli.cliente=spre.cod_cli','scli.tipo AS sclitipo','left');
		$do->rel_pointer('itspre','sinv','itspre.codigo=sinv.codigo','sinv.descrip AS sinvdescrip, sinv.precio1 AS sinvprecio1, sinv.precio2 AS sinvprecio2, sinv.precio3 AS sinvprecio3, sinv.precio4 AS sinvprecio4, sinv.iva AS sinviva, sinv.peso AS sinvpeso,sinv.tipo AS sinvtipo');

		$edit = new DataDetails('Presupuestos', $do);
		$edit->back_url = site_url('ventas/spre/filteredgrid');
		$edit->set_rel_title('itspre','Producto <#o#>');
		
		//IF(!empty($id)){
		$consulta="SELECT cliente, nombre, rifci, dire11,id FROM scli WHERE id='$id'";
		$mSQL=$this->db->query($consulta);
		//echo $consulta;
		$row =$mSQL->row();
		if ($mSQL->num_rows() > 0){
			$cliente=$row->cliente;
			$nombre=$row->nombre;
			$crifci=$row->rifci;
			$direc=$row->dire11;
			$id=$row->id;
			$uri= anchor("ventas/sclifyco/dataedit/show/$id","Regresar a cliente $cliente");
			
		}else{
			
			$cliente='';
			$nombre='';
			$crifci='';
			$direc='';
			$uri='';
			
			
		}
		//}

		$edit->pre_process('insert' ,'_pre_insert');
		$edit->pre_process('update' ,'_pre_update');
		$edit->post_process('insert','_post_insert');
		$edit->post_process('update','_post_update');
		$edit->post_process('delete','_post_delete');

		$edit->id = new hiddenField(" ", 'id');
        $edit->facturado = new hiddenField(" ", 'facturado');

		$edit->fecha = new DateonlyField('Fecha', 'fecha','Y-m-d');
		$edit->fecha->insertValue = date('Y-m-d');
		$edit->fecha->rule = 'required';
		//$edit->fecha->mode = 'autohide';
		$edit->fecha->size = 12;
		$edit->fecha->rule= "callback_cambio";
		
		$edit->almacen = new  dropdownField ('Almac&eacute;n', 'almacen');
	    $edit->almacen->options("SELECT ubica, CONCAT(ubica,' ',ubides) nombre FROM caub WHERE gasto='N' and activo='S' ORDER BY ubica");
		$edit->almacen->rule = 'required';
		$edit->almacen->style='width:220px;';
		
		$edit->status = new  dropdownField ('Estado', 'status');
		$edit->status->options('SELECT codigo, descrip FROM spre_status ORDER BY descrip');
		$edit->status->style='width:200px;';
		
		$edit->vd = new  dropdownField ('Vendedor', 'vd');
		$edit->vd->options('SELECT vendedor, CONCAT(vendedor,\' \',nombre) nombre FROM vend ORDER BY vendedor');
		$edit->vd->style='width:200px;';
		$edit->vd->size = 5;
		
		$edit->tipo_doc = new  dropdownField ('Tipo', 'tipo_doc');
		$edit->tipo_doc->option('FC','PRESUPUESTO');
		$edit->tipo_doc->option('MU','MUESTRA'); 
        $edit->tipo_doc->option('PD','PROD. DEFECTO'); 
        $edit->tipo_doc->option('SA','AJUSTE DE SALIDA');
		$edit->tipo_doc->style='width:200px;';
		
		$edit->afecto = new  dropdownField ('Igv', 'afecto');
		$edit->afecto->option('S','AFECTO');
		$edit->afecto->option('N','INAFECTO');
		$edit->afecto->onchange  ='totalizar()';
		$edit->afecto->style='width:200px;';
		
		$edit->numero = new inputField('N&uacute;mero', 'numero');
		$edit->numero->size = 10;
		$edit->numero->mode='autohide';
		$edit->numero->maxlength=8;
		$edit->numero->apply_rules=false; //necesario cuando el campo es clave y no se pide al usuario
		$edit->numero->when=array('show','modify');
        
		$edit->fnumero = new inputField('Factura', 'fnumero');
		$edit->fnumero->size = 10;
		$edit->fnumero->mode='autohide';
		$edit->fnumero->maxlength=8;
		$edit->fnumero->apply_rules=false; //necesario cuando el campo es clave y no se pide al usuario
		$edit->fnumero->when=array('show');

		$edit->peso = new inputField('Peso', 'peso');
		$edit->peso->css_class = 'inputnum';
		$edit->peso->readonly  = true;
		$edit->peso->size      = 10;
				
		$edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY descrip");
		$edit->moneda->style='width:200px;';
		
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		$edit->cambio->when=array('show');

		$edit->cliente = new inputField('Codigo','cod_cli');
		$edit->cliente->size = 6;
		$edit->cliente->maxlength=5;
		$edit->cliente->append($boton);
		$edit->cliente->readonly  = true;
				
		$edit->nombre = new inputField('Nombre', 'nombre');
		$edit->nombre->size = 35;
		$edit->nombre->maxlength=40;
		$edit->nombre->autocomplete=false;
		$edit->nombre->rule= 'required';
		$edit->nombre->readonly  = true;
		
		$rifci=$this->datasis->traevalor('TIPO');

		$edit->rifci   = new inputField("$rifci",'rifci');
		$edit->rifci->autocomplete=false;
		$edit->rifci->size = 15;
		$edit->rifci->readonly  = true;

		$edit->direc = new inputField('Direcci&oacute;n','direc');
		$edit->direc->size = 55;
		$edit->direc->readonly  = true;

		//Para saber que precio se le va a dar al cliente
		$edit->sclitipo = new hiddenField('', 'sclitipo');
		$edit->sclitipo->db_name     = 'sclitipo';
		$edit->sclitipo->pointer     = true;
		$edit->sclitipo->insertValue = 1;
		
		$edit->transportista = new inputField("Empresa de Transporte", "transportista");
		$edit->transportista->size=50;
        //$edit->transportista->rule = "required";
		$edit->transportista->group = "Informaci&oacute;n Adicional";
		$edit->transportista->append($boton2);
        
        $edit->direct = new inputField("Direcci&oacute;n", "direct");
		$edit->direct->size=50;
		$edit->direct->group = "Informaci&oacute;n Adicional";
        
        $edit->atencion = new inputField("Atenci&oacute;n", "atencion");
		$edit->atencion->rule = "strtoupper";
		$edit->atencion->size=50;
		$edit->atencion->group = "Informaci&oacute;n Adicional";
		
		$edit->tipod = new inputField("Tipo de Despacho", "tipod");
		$edit->tipod->rule = "strtoupper";
		$edit->tipod->size=50;
		$edit->tipod->group = "Informaci&oacute;n Adicional";
		
		$edit->observa = new inputField("Observaci&oacute;n","observa");
        $edit->observa->size=40;
        $edit->observa->rule = "strtoupper";
        $edit->observa->group="Informaci&oacute;n Adicional";

		//**************************
		//  Campos para el detalle
		//**************************
		$edit->codigo = new inputField('C&oacute;digo <#o#>', 'codigo_<#i#>');
		$edit->codigo->db_name  = 'codigo';
		$edit->codigo->rel_id   = 'itspre';
		$edit->codigo->rule     = 'required';
		//$edit->codigo->style    = 'width:80%';
		$edit->codigo->size    = 15;
		$edit->codigo->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->size=35;
		$edit->desca->db_name='desca';
		$edit->desca->maxlength=40;
		$edit->desca->readonly  = true;
		$edit->desca->rel_id='itspre';
		$edit->desca->rule = 'required';
		//$edit->desca->style    = 'width:100%';
		
		$edit->unidad = new inputField('Unidad <#o#>', 'unidad_<#i#>');
		$edit->unidad->size=20;
		$edit->unidad->db_name='unidad';
		$edit->unidad->maxlength=40;
		//$edit->unidad->readonly  = true;
		$edit->unidad->rule = 'required';
		$edit->unidad->rel_id='itspre';

		$edit->cana = new inputField('Cantidad <#o#>', 'cana_<#i#>');
		$edit->cana->db_name  = 'cana';
		$edit->cana->css_class= 'inputnum';
		$edit->cana->rel_id   = 'itspre';
		$edit->cana->maxlength= 10;
		$edit->cana->size     = 6;
		$edit->cana->rule     = 'required|positive';
		$edit->cana->autocomplete=false;
		$edit->cana->onkeyup  ='importe(<#i#>)';
		$edit->cana->style    = 'width:90%';

		$edit->preca = new inputField('Precio <#o#>', 'preca_<#i#>');
		$edit->preca->db_name   = 'preca';
		$edit->preca->css_class = 'inputnum';
		$edit->preca->rel_id    = 'itspre';
		//$edit->preca->size      = 10;
		$edit->preca->rule      = 'required|positive';
		$edit->preca->readonly  = true;
		$edit->preca->size    = 15;

		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=10;
		$edit->importe->css_class='inputnum';
		$edit->importe->onkeyup  ='totalizar()';
		$edit->importe->rel_id   ='itspre';
		//$edit->importe->style    = 'width:90%';
		$edit->importe->size    = 15;
		
		for($i=1;$i<5;$i++){
			$obj='precio'.$i;
			$edit->$obj = new hiddenField('Precio <#o#>', $obj.'_<#i#>');
			$edit->$obj->db_name   = 'sinv'.$obj;
			$edit->$obj->rel_id    = 'itspre';
			$edit->$obj->pointer   = true;
		}

		$edit->itiva = new hiddenField('', 'itiva_<#i#>');
		$edit->itiva->db_name  = 'iva';
		$edit->itiva->rel_id   = 'itspre';

		$edit->pond = new hiddenField('', "pond_<#i#>");
		$edit->pond->db_name='pond';
		$edit->pond->rel_id   ='itspre';
		//**************************
		//fin de campos para detalle
		//**************************

		$edit->ivat = new inputField('Impuesto', 'iva');
		$edit->ivat->css_class ='inputnum';
		$edit->ivat->readonly  =true;
		$edit->ivat->size      = 10;

		$edit->totals = new inputField('Sub-Total', 'totals');
		$edit->totals->css_class ='inputnum';
		$edit->totals->readonly  =true;
		$edit->totals->size      = 10;

		$edit->totalg = new inputField('Monto Total', 'totalg');
		$edit->totalg->css_class ='inputnum';
		$edit->totalg->readonly  =true;
		$edit->totalg->size      = 10;

		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));
        
        $edit->paisori = new inputField('Pais Origen', 'paisori');
		$edit->paisori->size =60;
		$edit->paisori->maxlength=100;  
		$edit->paisori->rule = "strtoupper";
        
        $edit->paiso = new inputField('Puerto Origen', 'paiso');
		$edit->paiso->size =60;
		$edit->paiso->maxlength=100;  
		$edit->paiso->rule = "strtoupper";
		
		$edit->puerto = new inputField('Puerto Destino', 'puerto');
		$edit->puerto->size =60;
		$edit->puerto->maxlength=100;
		$edit->puerto->rule = "strtoupper"; 
		
		$edit->arancel = new inputField('Arancel', 'arancel');
		$edit->arancel->size =60;
		$edit->arancel->maxlength=100;
				
		$edit->termino = new inputField('Termino', 'termino');
		$edit->termino->size =60;
		$edit->termino->maxlength=100;
		$edit->termino->rule = "strtoupper";
        
        //$edit->formap = new  dropdownField ('La factura se cancelara:','formap');  
		//$edit->formap->option("X",'Seleccione un Tipo');
		//$edit->formap->option("A",'Credito con Abono Total o Parcial');
        //$edit->formap->option("C",'Credito con letras asociadas');
		//$edit->formap->option("E",'De Contado'); 
		//$edit->formap->rule      = 'required';
		//$edit->formap->style='width:300px;';
		
		$edit->condi1 = new inputField('Condiciones', 'condi1');
		$edit->condi1->size = 60;
		$edit->condi1->maxlength=70;
		$edit->condi1->autocomplete=false;

		$edit->condi2 = new inputField('Condiciones', 'condi2');
		$edit->condi2->size = 60;
		$edit->condi2->maxlength=70;
		$edit->condi2->autocomplete=false;
		
		$edit->condi3 = new inputField('Condiciones', 'condi3');
		$edit->condi3->size = 60;
		$edit->condi3->maxlength=70;
		$edit->condi3->autocomplete=false;
		
		$edit->condi4 = new inputField('Condiciones', 'condi4');
		$edit->condi4->size = 60;
		$edit->condi4->maxlength=70;
		$edit->condi4->autocomplete=false;
		
		$presup     =$edit->_dataobject->get('numero');
		$facturado  =$edit->_dataobject->get('facturado');
        $cod_cli    =$edit->_dataobject->get('cod_cli');
        
        $saldop=$this->datasis->dameval("SELECT sum(monto)-sum(abonos)as saldo from smov where cod_cli='$cod_cli' and tipo_doc='FC' AND abonos<monto");
        $limite=$this->datasis->dameval("SELECT limite FROM scli where cliente='$cod_cli'");
        $disponible=($limite-$saldop);
        
        $disponiblep =$this->datasis->dameval("SELECT (SUM(cana)-SUM(cdespacha)) FROM itspre as a 
        JOIN sinv as b ON a.codigo=b.codigo 
        WHERE numero='$presup' and b.tipo='Articulo'");
        
        $disponiblem =$this->datasis->dameval("SELECT SUM(cdespacha) FROM itspre as a 
        JOIN sinv as b ON a.codigo=b.codigo 
        WHERE numero='$presup' and b.tipo='Articulo'");
                
        if($edit->_status=='show'){
			$numero  =$edit->_dataobject->get('id');
            
            //busca id de factura
            $fnumero  =$edit->_dataobject->get('fnumero');
            $idf =$this->datasis->dameval("SELECT id FROM sfac WHERE numero='$fnumero'");
            
			//si se cumple la condicion muestra factura o carga factura
            
			IF($facturado=='S'){
				$accion="javascript:window.location='".site_url("ventas/sfac/dataedit/show/$idf")."'";  
				$edit->button_status('btn_cargar','Ver Factura',$accion,'BR','show');					
			}ELSE{
				
                IF($disponiblep==0){
                    
                    $accion="javascript:window.location='".site_url("ventas/sfac/insertar/$numero")."'";  
                    $edit->button_status('btn_cargar','Cargar Facturar',$accion,'BR','show');    
                    
                }
			}
            
            //echo 'numero'.$numero;
            $accion="javascript:window.location='".site_url("ventas/spre/insertar/$numero")."'";  
            $edit->button_status('btn_duplicar','Duplicar Presupuesto',$accion,'BR','show');
            
            $accion="javascript:window.location='".site_url("ventas/sfacdespfyco/detalle/$presup/$numero")."'";  
            $edit->button_status('btn_cargar','Gu&iacute;a de Remisi&oacute;n',$accion,'BR','show');
                    
            
		}

        IF($facturado=='S'){
			$edit->buttons('back','undo', 'add_rel');		
		}else{
            IF($disponiblem>0){
                
                $edit->buttons('back','save','undo', 'add_rel');	
            }else{
                
                $edit->buttons('back','save','modify','undo', 'add_rel');
            
            }
		}
		
        if(($edit->_status!='show')&&($edit->_status!='modify') ){
			$conten['uri']  = $uri;
		}else{
			$conten['uri']  = ' ';	
		}
        
        $edit->build();
		
        $conten['form']  =&  $edit;
		$data['content'] = $this->load->view('view_spre', $conten,true);
		$data['title']   = heading('Presupuesto No.'.$edit->numero->value);

		//$data['style']  = style('vino/jquery-ui.css');
		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		//$data['script'] .= script('plugins/jquery.autocomplete.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
    function cambio(){
		
		$fecha=$this->input->post('fecha');
        
        $chek=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
		//echo 'aquii'.$chek;
		if ($chek == 0){
			$this->validation->set_message('cambio',"No se ha registrado el VALOR DE LA MONEDA para la fecha $fecha");
			return FALSE;
		}else {
  		return TRUE;
		}
	}
	// Busca Productos para autocomplete
    
	function buscasinv(){
		$mid  = $this->input->post('q');
		$qdb  = $this->db->escape('%'.$mid.'%');
		$qba  = $this->db->escape($mid);

		$data = '{[ ]}';
		if($mid !== false){
			$retArray = $retorno = array();

			$mSQL="SELECT DISTINCT TRIM(a.descrip) AS descrip, TRIM(a.codigo) AS codigo, a.precio1,precio2,precio3,precio4, a.iva,a.existen,a.tipo
				,a.peso, a.ultimo, a.pond FROM sinv AS a
				LEFT JOIN barraspos AS b ON a.codigo=b.codigo
				WHERE (a.codigo LIKE $qdb OR a.descrip LIKE  $qdb OR a.barras LIKE $qdb OR b.suplemen=$qba) AND a.activo='S'
				ORDER BY a.descrip LIMIT 10";
			$cana=1;

			$query = $this->db->query($mSQL);
			if ($query->num_rows() > 0){
				foreach( $query->result_array() as  $row ) {
					$retArray['label']   = '('.$row['codigo'].') '.$row['descrip'].' '.$row['precio1'].' Bs. - '.$row['existen'];
					$retArray['value']   = $row['codigo'];
					$retArray['codigo']  = $row['codigo'];
					$retArray['cana']    = $cana;
					$retArray['tipo']    = $row['tipo'];
					$retArray['peso']    = $row['peso'];
					$retArray['ultimo']  = $row['ultimo'];
					$retArray['pond']    = $row['pond'];
					$retArray['base1']   = $row['precio1']*100/(100+$row['iva']);
					$retArray['base2']   = $row['precio2']*100/(100+$row['iva']);
					$retArray['base3']   = $row['precio3']*100/(100+$row['iva']);
					$retArray['base4']   = $row['precio4']*100/(100+$row['iva']);
					$retArray['descrip'] = $row['descrip'];
					//$retArray['descrip'] = wordwrap($row['descrip'], 25, '<br />');
					$retArray['iva']     = $row['iva'];
					array_push($retorno, $retArray);
				}
				$data = json_encode($retorno);
	        }
		}
		echo $data;
	}
    
    function _pre_insert($do){
		
		$numero=$this->datasis->fprox_numero('nspre');
		$do->set('numero',$numero);
		$fecha  =$do->get('fecha');
		$afecto =$do->get('afecto');
		$vd     =$do->get('vd');
		$igv    =$this->datasis->traevalor('IGV');
		$ivap   =$this->datasis->traevalor('IVAP');
		$cod_cli=$do->get('cod_cli');
		
		//actualiza al cambio segun fecha
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        $do->set('cambio',$cambio);
        //$do->set('cdespacha','0');
		
		$iva=$totals=$totalg=0;
				
		$cana=$do->count_rel('itspre');
		for($i=0;$i<$cana;$i++){
			//cantidad
			$itcana    = $do->get_rel('itspre','cana',$i);
			//precio base
			$itpreca   = $do->get_rel('itspre','preca',$i);
			//iva del producto
			$itiva     = $do->get_rel('itspre','iva',$i);
			//importe
			$itimporte = $itpreca*$itcana;
			$do->set_rel('itspre','importe' ,$itimporte,$i);
			//total + iva
			$do->set_rel('itspre','totaorg' ,((($itimporte*18)/100)+$itimporte),$i);
			
			//fecha
			$do->set_rel('itspre','fecha'   ,$fecha  ,$i);
			//vendedor
			$do->set_rel('itspre','vendedor',$vd     ,$i);
			
			$totals  += $itimporte;
			
			//$totalg  += $itimporte;
			//$totals  += $itimporte/$ivap;
			//$iva     = ($totals*$itiva/100);	
			
			
		}
		//PRECIO
		//if($afecto=='S'){
		//	$iva     = ($totalg-$totals);
		//	$totalg  = $totalg;
		//}else{
		//	$iva=0;
		//	$totals  =$totalg;
		//}
		
		if($afecto=='S'){
			$iva    = ROUND(($totals*$igv)/100,2);
		}else{
			$iva=0;
		}
        
        $totalg = $totals+$iva; 

		$do->set('totals' ,round($totals ,2));
		$do->set('totalg' ,round($totalg ,2));
		$do->set('iva'    ,round($iva    ,2));
		$mSQL_1=$this->db->query("UPDATE scli SET presupfyco='S' WHERE cliente='$cod_cli'");
		return true;
	}
    function insertar($id=''){
        
        $numero=$this->datasis->dameval("SELECT numero FROM spre WHERE id='$id'");
        
        $usuario=$this->session->userdata['usuario'];

        $nspre=$this->datasis->fprox_numero('nspre');
        
        
        //Inserta encabezado
        
        $mSQL="SELECT  tipo_doc,  numero,  fecha,  vd,  cod_cli,  rifci,  nombre, direc,  dire1,  iva, 
        totals,  totalg, condi1,condi2,condi3,condi4,paisori,arancel,puerto,termino,paiso,paisori,moneda,cambio FROM spre  WHERE id='$id'";
        
        $query = $this->db->query($mSQL);
        
        foreach($query->result() as $spre ){
            
            $mSQL_insert=$this->db->query("INSERT INTO spre (tipo_doc,numero, fecha,  vd,  cod_cli,  rifci,  nombre,  direc,  dire1, iva, totals,  totalg, condi1,condi2,condi3,condi4,  usuario,arancel,paiso,puerto,termino,paisori,moneda,cambio)
                                                     VALUES('FC','$nspre',CURDATE(),'$spre->vd','$spre->cod_cli','$spre->rifci','$spre->nombre','$spre->direc','$spre->dire1','$spre->iva','$spre->totals','$spre->totalg','$spre->condi1','$spre->condi2','$spre->condi3','$spre->condi4','$usuario','$spre->arancel','$spre->paiso','$spre->puerto','$spre->termino','$spre->paisori','$spre->moneda','$spre->cambio')");
                    
		}
        
                
        //Inserta Items
        
        $mSQL_items="SELECT   numero,  codigo,  desca,  unidad,  cana,  preca,  importe,iva,  
        fecha,  pond,  totaorg, id,unidad FROM itspre WHERE numero='$numero'";
        
        $query_items = $this->db->query($mSQL_items);
        
        foreach($query_items->result() as $itspre ){
            
            $mSQL_insert=$this->db->query("INSERT INTO itspre (numero, codigo,  desca,  cana,  preca,  importe,  iva,  pond,unidad)
                                                     VALUES('$nspre','$itspre->codigo','$itspre->desca','$itspre->cana','$itspre->preca','$itspre->importe','$itspre->iva','$itspre->pond','$itspre->unidad')");
                    
		}
       
       
       //redirecciona a sfac 
        $idp=$this->datasis->dameval("SELECT id FROM spre WHERE numero='$nspre'");
        redirect("ventas/spre/dataedit/modify/$idp");
        
    }
	function _pre_update($do){
		
		$fecha =$do->get('fecha');
		$vd    =$do->get('vd');
		$afecto=$do->get('afecto');
		
		$ivap=$this->datasis->traevalor('IVAP');
		$igv=$this->datasis->traevalor('IGV');
		
		//actualiza al cambio segun fecha
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fecha'");
        $do->set('cambio',$cambio);

		$iva=$totals=$totalg=0;
		$cana=$do->count_rel('itspre');
		for($i=0;$i<$cana;$i++){
			//cantidad
			$itcana    = $do->get_rel('itspre','cana',$i);
			//precio base
			$itpreca   = $do->get_rel('itspre','preca',$i);
			//iva del producto
			$itiva     = $do->get_rel('itspre','iva',$i);
			//importe
			$itimporte = $itpreca*$itcana;
			
			$do->set_rel('itspre','importe' ,$itimporte,$i);
			//total + iva
			$do->set_rel('itspre','totaorg' ,((($itimporte*18)/100)+$itimporte),$i);
			//fecha
			$do->set_rel('itspre','fecha'   ,$fecha  ,$i);
			//vendedor
			$do->set_rel('itspre','vendedor',$vd     ,$i);

			$totals  += $itimporte;
			
			//$totalg  += $itimporte;
			//$totals  += $itimporte/$ivap;
			
		}
		
		//if($afecto=='S'){
		//	$iva     = ($totalg-$totals);
		//	$totalg  = $totalg;
		//}else{
		//	$iva=0;
		//	$totals  =$totalg;
		//}
		
		if($afecto=='S'){
			$iva    = ROUND(($totals*$igv)/100,2);
		}else{
			$iva=0;
		}
        
        $totalg = $totals+$iva; 

		$do->set('totals' ,round($totals ,2));
		$do->set('iva'    ,round($iva    ,2));
		$do->set('totalg' ,round($totalg ,2));
		
		return true;
	}	
    
	 /** Despues de realizar una acción **/
    
	function _post_insert($do){
		$codigo=$do->get('numero');
		logusu('spre',"PRESUPUESTO $codigo CREADO");
	}
    
	function _post_update($do){
		$codigo=$do->get('numero');
		logusu('spre',"PRESUPUESTO $codigo MODIFICADO");
	}

	function _post_delete($do){
		$codigo=$do->get('numero');
		logusu('spre',"PRESUPUESTO $codigo ELIMINADO");
	}
}
